检测方法

typeof 操作符

  • 只能检测出基本类型undefined,object,string,boolean,number,function,symbol
  • 检测原始值的类型,其他引用类型统一都在object中,如果要区分object的不同引用类型,需要用其他方法

Object.prototype.toString

  • 可以根据返回不同对象包装函数类型的字符串
  • 可以用来区分系统内类类型

instanceof

  • 可以用来检测自定义类的类型,检测对象是否属于指定的类的实例
  • 不同执行上下文不同的构造函数属于不同的结果,比如即使同样是Array也不行,所以有了Array.isArray来处理类似数组的判断
  • o instance t检测o是否在t.protoptype的原型链上

constructor属性

  • 通过对象的constructor属性来判断
  • 多个执行上下文(比如浏览器的多个框架子页面)无法判断出来是同一个,即使内容完全一样也不是同一个,参考instanceof

构造函数的名称

  • 非标准的方法,让不同上下文中的构造函数都用同一个名字,可以参考下v8源码,Array.isArray的实现

最后更新: 2022年03月02日 03:32

原始链接: http://rawbin-.github.io/dev-app/2018-10-20-js-type-detection/

× 赞赏这个人~
打赏二维码